home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / arkanoid.c < prev    next >
C/C++ Source or Header  |  2000-05-25  |  22KB  |  578 lines

  1. /***************************************************************************
  2.  
  3.     Arkanoid driver (Preliminary)
  4.  
  5.  
  6.     Japanese version support cocktail mode (DSW #7), the others don't.
  7.  
  8.     Here are the versions we have:
  9.  
  10.     arkanoid    World version, probably an earlier revision
  11.     arknoidu    USA version, probably a later revision; There has been code
  12.                 inserted, NOT patched, so I don't think it's a bootleg
  13.                 The 68705 code for this one was not available; I made it up from
  14.                 the World version changing the level data pointer table.
  15.     arknoidj    Japanese version with level selector.
  16.                 The 68705 code for this one was not available; I made it up from
  17.                 the World version changing the level data pointer table.
  18.     arkbl2        Bootleg of the early Japanese version.
  19.                 The only difference is that the warning text has been replaced
  20.                 by "WAIT"
  21.                 ROM    E2.6F should be identical to the real Japanese one.
  22.                 (It only differs in the country byte from A75_11.ROM)
  23.                 This version works fine with the real MCU ROM
  24.     arkatayt    Another bootleg of the early Japanese one, more heavily modified
  25.     arkblock    Another bootleg of the early Japanese one, more heavily modified
  26.     arkbloc2    Another bootleg
  27.     arkbl3       Another bootleg of the early Japanese one, more heavily modified
  28.     arkangc        Game Corporation bootleg with level selector
  29.  
  30. ***************************************************************************/
  31.  
  32. #include "driver.h"
  33. #include "vidhrdw/generic.h"
  34.  
  35.  
  36.  
  37. void arkanoid_init_machine(void);
  38.  
  39. WRITE_HANDLER( arkanoid_d008_w );
  40. void arkanoid_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  41. void arkanoid_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  42.  
  43. READ_HANDLER( arkanoid_Z80_mcu_r );
  44. WRITE_HANDLER( arkanoid_Z80_mcu_w );
  45.  
  46. READ_HANDLER( arkanoid_68705_portA_r );
  47. WRITE_HANDLER( arkanoid_68705_portA_w );
  48. WRITE_HANDLER( arkanoid_68705_ddrA_w );
  49.  
  50. READ_HANDLER( arkanoid_68705_portC_r );
  51. WRITE_HANDLER( arkanoid_68705_portC_w );
  52. WRITE_HANDLER( arkanoid_68705_ddrC_w );
  53.  
  54. READ_HANDLER( arkanoid_68705_input_0_r );
  55. READ_HANDLER( arkanoid_input_2_r );
  56.  
  57.  
  58. static struct MemoryReadAddress readmem[] =
  59. {
  60.     { 0x0000, 0xbfff, MRA_ROM },
  61.     { 0xc000, 0xcfff, MRA_RAM },
  62.     { 0xd001, 0xd001, AY8910_read_port_0_r },
  63.     { 0xd00c, 0xd00c, arkanoid_68705_input_0_r },  /* mainly an input port, with 2 bits from the 68705 */
  64.     { 0xd010, 0xd010, input_port_1_r },
  65.     { 0xd018, 0xd018, arkanoid_Z80_mcu_r },  /* input from the 68705 */
  66.     { 0xe000, 0xefff, MRA_RAM },
  67.     { 0xf000, 0xffff, MRA_ROM },
  68.     { -1 }    /* end of table */
  69. };
  70.  
  71. static struct MemoryWriteAddress writemem[] =
  72. {
  73.     { 0x0000, 0xbfff, MWA_ROM },
  74.     { 0xc000, 0xcfff, MWA_RAM },
  75.     { 0xd000, 0xd000, AY8910_control_port_0_w },
  76.     { 0xd001, 0xd001, AY8910_write_port_0_w },
  77.     { 0xd008, 0xd008, arkanoid_d008_w },    /* gfx bank, flip screen etc. */
  78.     { 0xd010, 0xd010, watchdog_reset_w },
  79.     { 0xd018, 0xd018, arkanoid_Z80_mcu_w }, /* output to the 68705 */
  80.     { 0xe000, 0xe7ff, videoram_w, &videoram, &videoram_size },
  81.     { 0xe800, 0xe83f, MWA_RAM, &spriteram, &spriteram_size },
  82.     { 0xe840, 0xefff, MWA_RAM },
  83.     { 0xf000, 0xffff, MWA_ROM },
  84.     { -1 }    /* end of table */
  85. };
  86.  
  87. static struct MemoryReadAddress boot_readmem[] =
  88. {
  89.     { 0x0000, 0xbfff, MRA_ROM },
  90.     { 0xc000, 0xcfff, MRA_RAM },
  91.     { 0xd001, 0xd001, AY8910_read_port_0_r },
  92.     { 0xd00c, 0xd00c, input_port_0_r },
  93.     { 0xd010, 0xd010, input_port_1_r },
  94.     { 0xd018, 0xd018, arkanoid_input_2_r },
  95.     { 0xe000, 0xefff, MRA_RAM },
  96.     { 0xf000, 0xffff, MRA_ROM },
  97.     { -1 }    /* end of table */
  98. };
  99.  
  100. static struct MemoryWriteAddress boot_writemem[] =
  101. {
  102.     { 0x0000, 0xbfff, MWA_ROM },
  103.     { 0xc000, 0xcfff, MWA_RAM },
  104.     { 0xd000, 0xd000, AY8910_control_port_0_w },
  105.     { 0xd001, 0xd001, AY8910_write_port_0_w },
  106.     { 0xd008, 0xd008, arkanoid_d008_w },    /* gfx bank, flip screen etc. */
  107.     { 0xd010, 0xd010, watchdog_reset_w },
  108.     { 0xd018, 0xd018, MWA_NOP },
  109.     { 0xe000, 0xe7ff, videoram_w, &videoram, &videoram_size },
  110.     { 0xe800, 0xe83f, MWA_RAM, &spriteram, &spriteram_size },
  111.     { 0xe840, 0xefff, MWA_RAM },
  112.     { 0xf000, 0xffff, MWA_ROM },
  113.     { -1 }    /* end of table */
  114. };
  115.  
  116.  
  117. static struct MemoryReadAddress mcu_readmem[] =
  118. {
  119.     { 0x0000, 0x0000, arkanoid_68705_portA_r },
  120.     { 0x0001, 0x0001, arkanoid_input_2_r },
  121.     { 0x0002, 0x0002, arkanoid_68705_portC_r },
  122.     { 0x0010, 0x007f, MRA_RAM },
  123.     { 0x0080, 0x07ff, MRA_ROM },
  124.     { -1 }    /* end of table */
  125. };
  126.  
  127. static struct MemoryWriteAddress mcu_writemem[] =
  128. {
  129.     { 0x0000, 0x0000, arkanoid_68705_portA_w },
  130.     { 0x0002, 0x0002, arkanoid_68705_portC_w },
  131.     { 0x0004, 0x0004, arkanoid_68705_ddrA_w },
  132.     { 0x0006, 0x0006, arkanoid_68705_ddrC_w },
  133.     { 0x0010, 0x007f, MWA_RAM },
  134.     { 0x0080, 0x07ff, MWA_ROM },
  135.     { -1 }    /* end of table */
  136. };
  137.  
  138.  
  139. INPUT_PORTS_START( arkanoid )
  140.     PORT_START    /* IN0 */
  141.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
  142.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
  143.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
  144.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
  145.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
  146.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
  147.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL )    /* input from the 68705, some bootlegs need it to be 1 */
  148.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )    /* input from the 68705 */
  149.  
  150.     PORT_START    /* IN1 */
  151.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
  152.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  153.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  154.     PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN )
  155.  
  156.     PORT_START      /* IN2 - spinner Player 1 */
  157.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL, 30, 15, 0, 0)
  158.  
  159.     PORT_START      /* IN3 - spinner Player 2  */
  160.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL | IPF_COCKTAIL, 30, 15, 0, 0)
  161.  
  162.     PORT_START    /* DSW1 */
  163.     PORT_DIPNAME( 0x01, 0x00, "Allow Continue" )
  164.     PORT_DIPSETTING(    0x01, DEF_STR( No ) )
  165.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  166.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  167.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  168.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  169.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  170.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )
  171.     PORT_DIPSETTING(    0x08, "Easy" )
  172.     PORT_DIPSETTING(    0x00, "Hard" )
  173.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
  174.     PORT_DIPSETTING(    0x10, "20K 60K and every 60K" )
  175.     PORT_DIPSETTING(    0x00, "20000 only" )
  176.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Lives ) )
  177.     PORT_DIPSETTING(    0x20, "3" )
  178.     PORT_DIPSETTING(    0x00, "5" )
  179.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coinage ) )
  180.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  181.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
  182.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  183.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
  184. INPUT_PORTS_END
  185.  
  186. /* These are the input ports of the real Japanese ROM set                        */
  187. /* 'Block' uses the these ones as well.    The Tayto bootleg is different             */
  188. /*  in coinage and # of lives.                                                     */
  189.  
  190. INPUT_PORTS_START( arknoidj )
  191.     PORT_START    /* IN0 */
  192.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
  193.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
  194.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
  195.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
  196.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
  197.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
  198.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL )    /* input from the 68705, some bootlegs need it to be 1 */
  199.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )    /* input from the 68705 */
  200.  
  201.     PORT_START    /* IN1 */
  202.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
  203.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  204.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  205.     PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN )
  206.  
  207.     PORT_START      /* IN2 - spinner (multiplexed for player 1 and 2) */
  208.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL, 30, 15, 0, 0)
  209.  
  210.     PORT_START      /* IN3 - spinner Player 2  */
  211.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL | IPF_COCKTAIL, 30, 15, 0, 0)
  212.  
  213.     PORT_START    /* DSW1 */
  214.     PORT_DIPNAME( 0x01, 0x00, "Allow Continue" )
  215.     PORT_DIPSETTING(    0x01, DEF_STR( No ) )
  216.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  217.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  218.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  219.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  220.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  221.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )
  222.     PORT_DIPSETTING(    0x08, "Easy" )
  223.     PORT_DIPSETTING(    0x00, "Hard" )
  224.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
  225.     PORT_DIPSETTING(    0x10, "20K 60K and every 60K" )
  226.     PORT_DIPSETTING(    0x00, "20000 only" )
  227.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Lives ) )
  228.     PORT_DIPSETTING(    0x20, "3" )
  229.     PORT_DIPSETTING(    0x00, "5" )
  230.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coinage ) )
  231.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
  232.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
  233.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
  234.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  235.     PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
  236. INPUT_PORTS_END
  237.  
  238. /* Is the same as arkanoij, but the Coinage and Bonus_Life dips are different */
  239. INPUT_PORTS_START( arkatayt )
  240.     PORT_START    /* IN0 */
  241.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
  242.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
  243.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
  244.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
  245.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
  246.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
  247.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL )    /* input from the 68705, some bootlegs need it to be 1 */
  248.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )    /* input from the 68705 */
  249.  
  250.     PORT_START    /* IN1 */
  251.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
  252.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  253.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  254.     PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN )
  255.  
  256.     PORT_START      /* IN2 - spinner (multiplexed for player 1 and 2) */
  257.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL, 30, 15, 0, 0)
  258.  
  259.     PORT_START      /* IN3 - spinner Player 2  */
  260.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL | IPF_COCKTAIL, 30, 15, 0, 0)
  261.  
  262.     PORT_START    /* DSW1 */
  263.     PORT_DIPNAME( 0x01, 0x00, "Allow Continue" )
  264.     PORT_DIPSETTING(    0x01, DEF_STR( No ) )
  265.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  266.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  267.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  268.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  269.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  270.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )
  271.     PORT_DIPSETTING(    0x08, "Easy" )
  272.     PORT_DIPSETTING(    0x00, "Hard" )
  273.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
  274.     PORT_DIPSETTING(    0x10, "60K 100K and every 60K" )
  275.     PORT_DIPSETTING(    0x00, "60000 only" )
  276.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Lives ) )
  277.     PORT_DIPSETTING(    0x20, "3" )
  278.     PORT_DIPSETTING(    0x00, "5" )
  279.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coinage ) )
  280.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  281.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
  282.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
  283.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  284.     PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
  285. INPUT_PORTS_END
  286.  
  287.  
  288. static struct GfxLayout charlayout =
  289. {
  290.     8,8,    /* 8*8 characters */
  291.     4096,    /* 4096 characters */
  292.     3,    /* 3 bits per pixel */
  293.     { 2*4096*8*8, 4096*8*8, 0 },    /* the two bitplanes are separated */
  294.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  295.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  296.     8*8    /* every char takes 8 consecutive bytes */
  297. };
  298.  
  299.  
  300.  
  301. static struct GfxDecodeInfo gfxdecodeinfo[] =
  302. {
  303.     { REGION_GFX1, 0, &charlayout,  0, 64 },
  304.     /* sprites use the same characters above, but are 16x8 */
  305.     { -1 } /* end of array */
  306. };
  307.  
  308.  
  309.  
  310. static struct AY8910interface ay8910_interface =
  311. {
  312.     1,    /* 1 chips */
  313.     1500000,    /* 1.5 MHz ???? */
  314.     { 33 },
  315.     { 0 },
  316.     { input_port_4_r },
  317.     { 0 },
  318.     { 0 }
  319. };
  320.  
  321.  
  322.  
  323. static struct MachineDriver machine_driver_arkanoid =
  324. {
  325.     /* basic machine hardware */
  326.     {
  327.         {
  328.             CPU_Z80,
  329.             6000000,    /* 6 Mhz ?? */
  330.             readmem,writemem,0,0,
  331.             interrupt,1
  332.         },
  333.         {
  334.             CPU_M68705,
  335.             500000,    /* .5 Mhz (don't know really how fast, but it doesn't need to even be this fast) */
  336.             mcu_readmem,mcu_writemem,0,0,
  337.             ignore_interrupt,1
  338.         },
  339.     },
  340.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  341.     100, /* 100 CPU slices per second to synchronize between the MCU and the main CPU */
  342.     arkanoid_init_machine,
  343.  
  344.     /* video hardware */
  345.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  346.     gfxdecodeinfo,
  347.     512, 512,
  348.     arkanoid_vh_convert_color_prom,
  349.  
  350.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
  351.     0,
  352.     generic_vh_start,
  353.     generic_vh_stop,
  354.     arkanoid_vh_screenrefresh,
  355.  
  356.     /* sound hardware */
  357.     0,0,0,0,
  358.     {
  359.         {
  360.             SOUND_AY8910,
  361.             &ay8910_interface
  362.         }
  363.     }
  364. };
  365.  
  366. static struct MachineDriver machine_driver_bootleg =
  367. {
  368.     /* basic machine hardware */
  369.     {
  370.         {
  371.             CPU_Z80,
  372.             6000000,    /* 6 Mhz ?? */
  373.             boot_readmem,boot_writemem,0,0,
  374.             interrupt,1
  375.         },
  376.     },
  377.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  378.     1,
  379.     0,
  380.  
  381.     /* video hardware */
  382.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  383.     gfxdecodeinfo,
  384.     512, 512,
  385.     arkanoid_vh_convert_color_prom,
  386.  
  387.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
  388.     0,
  389.     generic_vh_start,
  390.     generic_vh_stop,
  391.     arkanoid_vh_screenrefresh,
  392.  
  393.     /* sound hardware */
  394.     0,0,0,0,
  395.     {
  396.         {
  397.             SOUND_AY8910,
  398.             &ay8910_interface
  399.         }
  400.     }
  401. };
  402.  
  403.  
  404.  
  405. /***************************************************************************
  406.  
  407.   Game driver(s)
  408.  
  409. ***************************************************************************/
  410.  
  411. ROM_START( arkanoid )
  412.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  413.     ROM_LOAD( "a75_01-1.rom", 0x0000, 0x8000, 0x5bcda3b0 )
  414.     ROM_LOAD( "a75_11.rom",   0x8000, 0x8000, 0xeafd7191 )
  415.  
  416.     ROM_REGION( 0x0800, REGION_CPU2 )    /* 8k for the microcontroller */
  417.     ROM_LOAD( "arkanoid.uc",  0x0000, 0x0800, 0x515d77b6 )
  418.  
  419.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  420.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  421.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  422.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  423.  
  424.     ROM_REGION( 0x0600, REGION_PROMS )
  425.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  426.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  427.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  428. ROM_END
  429.  
  430. ROM_START( arknoidu )
  431.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  432.     ROM_LOAD( "a75-19.bin",   0x0000, 0x8000, 0xd3ad37d7 )
  433.     ROM_LOAD( "a75-18.bin",   0x8000, 0x8000, 0xcdc08301 )
  434.  
  435.     ROM_REGION( 0x0800, REGION_CPU2 )    /* 8k for the microcontroller */
  436.     ROM_LOAD( "arknoidu.uc",  0x0000, 0x0800, BADCRC( 0xde518e47 ) )
  437.  
  438.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  439.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  440.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  441.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  442.  
  443.     ROM_REGION( 0x0600, REGION_PROMS )
  444.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  445.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  446.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  447. ROM_END
  448.  
  449. ROM_START( arknoidj )
  450.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  451.     ROM_LOAD( "a75-21.rom",   0x0000, 0x8000, 0xbf0455fc )
  452.     ROM_LOAD( "a75-22.rom",   0x8000, 0x8000, 0x3a2688d3 )
  453.  
  454.     ROM_REGION( 0x0800, REGION_CPU2 )    /* 8k for the microcontroller */
  455.     ROM_LOAD( "arknoidj.uc",  0x0000, 0x0800, BADCRC( 0x0a4abef6 ) )
  456.  
  457.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  458.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  459.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  460.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  461.  
  462.     ROM_REGION( 0x0600, REGION_PROMS )
  463.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  464.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  465.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  466. ROM_END
  467.  
  468. ROM_START( arkbl2 )
  469.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  470.     ROM_LOAD( "e1.6d",        0x0000, 0x8000, 0xdd4f2b72 )
  471.     ROM_LOAD( "e2.6f",        0x8000, 0x8000, 0xbbc33ceb )
  472.  
  473.     ROM_REGION( 0x0800, REGION_CPU2 )    /* 8k for the microcontroller */
  474.     ROM_LOAD( "68705p3.6i",   0x0000, 0x0800, 0x389a8cfb )
  475.  
  476.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  477.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  478.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  479.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  480.  
  481.     ROM_REGION( 0x0600, REGION_PROMS )
  482.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  483.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  484.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  485. ROM_END
  486.  
  487. ROM_START( arkbl3 )
  488.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  489.     ROM_LOAD( "arkanunk.1",   0x0000, 0x8000, 0xb0f73900 )
  490.     ROM_LOAD( "arkanunk.2",   0x8000, 0x8000, 0x9827f297 )
  491.  
  492.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  493.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  494.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  495.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  496.  
  497.     ROM_REGION( 0x0600, REGION_PROMS )
  498.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  499.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  500.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  501. ROM_END
  502.  
  503. ROM_START( arkatayt )
  504.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  505.     ROM_LOAD( "arkanoid.1",   0x0000, 0x8000, 0x6e0a2b6f )
  506.     ROM_LOAD( "arkanoid.2",   0x8000, 0x8000, 0x5a97dd56 )
  507.  
  508.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  509.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  510.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  511.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  512.  
  513.     ROM_REGION( 0x0600, REGION_PROMS )
  514.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  515.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  516.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  517. ROM_END
  518.  
  519. ROM_START( arkblock )
  520.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  521.     ROM_LOAD( "block01.bin",  0x0000, 0x8000, 0x5be667e1 )
  522.     ROM_LOAD( "block02.bin",  0x8000, 0x8000, 0x4f883ef1 )
  523.  
  524.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  525.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  526.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  527.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  528.  
  529.     ROM_REGION( 0x0600, REGION_PROMS )
  530.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  531.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  532.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  533. ROM_END
  534.  
  535. ROM_START( arkbloc2 )
  536.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  537.     ROM_LOAD( "ark-6.bin",    0x0000, 0x8000, 0x0be015de )
  538.     ROM_LOAD( "arkgc.2",      0x8000, 0x8000, 0x9f0d4754 )
  539.  
  540.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  541.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  542.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  543.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  544.  
  545.     ROM_REGION( 0x0600, REGION_PROMS )
  546.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  547.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  548.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  549. ROM_END
  550.  
  551. ROM_START( arkangc )
  552.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  553.     ROM_LOAD( "arkgc.1",      0x0000, 0x8000, 0xc54232e6 )
  554.     ROM_LOAD( "arkgc.2",      0x8000, 0x8000, 0x9f0d4754 )
  555.  
  556.     ROM_REGION( 0x18000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  557.     ROM_LOAD( "a75_03.rom",   0x00000, 0x8000, 0x038b74ba )
  558.     ROM_LOAD( "a75_04.rom",   0x08000, 0x8000, 0x71fae199 )
  559.     ROM_LOAD( "a75_05.rom",   0x10000, 0x8000, 0xc76374e2 )
  560.  
  561.     ROM_REGION( 0x0600, REGION_PROMS )
  562.     ROM_LOAD( "07.bpr",       0x0000, 0x0200, 0x0af8b289 )    /* red component */
  563.     ROM_LOAD( "08.bpr",       0x0200, 0x0200, 0xabb002fb )    /* green component */
  564.     ROM_LOAD( "09.bpr",       0x0400, 0x0200, 0xa7c6c277 )    /* blue component */
  565. ROM_END
  566.  
  567.  
  568.  
  569. GAME( 1986, arkanoid, 0,        arkanoid, arkanoid, 0, ROT90, "Taito Corporation Japan", "Arkanoid (World)" )
  570. GAME( 1986, arknoidu, arkanoid, arkanoid, arkanoid, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US)" )
  571. GAME( 1986, arknoidj, arkanoid, arkanoid, arknoidj, 0, ROT90, "Taito Corporation", "Arkanoid (Japan)" )
  572. GAMEX(1986, arkbl2,   arkanoid, arkanoid, arknoidj, 0, ROT90, "bootleg", "Arkanoid (Japanese bootleg Set 2)", GAME_NOT_WORKING )
  573. GAMEX(1986, arkbl3,   arkanoid, bootleg,  arknoidj, 0, ROT90, "bootleg", "Arkanoid (Japanese bootleg Set 3)", GAME_NOT_WORKING )
  574. GAME( 1986, arkatayt, arkanoid, bootleg,  arkatayt, 0, ROT90, "bootleg", "Arkanoid (Tayto bootleg, Japanese)" )
  575. GAMEX(1986, arkblock, arkanoid, bootleg,  arknoidj, 0, ROT90, "bootleg", "Block (bootleg, Japanese)", GAME_NOT_WORKING )
  576. GAME( 1986, arkbloc2, arkanoid, bootleg,  arknoidj, 0, ROT90, "bootleg", "Block (Game Corporation bootleg)" )
  577. GAME( 1986, arkangc,  arkanoid, bootleg,  arknoidj, 0, ROT90, "bootleg", "Arkanoid (Game Corporation bootleg)" )
  578.